//package com.xiao.message.service.handler.impl;
//
//import com.xiao.foundation.utils.RandomType;
//import com.xiao.foundation.utils.StringUtil;
//import com.xiao.message.properties.ChuangLanConstants;
//import com.xiao.message.properties.ChuangLanProperties;
//import com.xiao.message.service.dto.SmsCaptchaDTO;
//import com.xiao.message.service.handler.CaptchaMessageHandler;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.AmqpException;
//import org.springframework.amqp.rabbit.connection.CorrelationData;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.http.ResponseEntity;
//import org.springframework.stereotype.Service;
//import org.springframework.web.client.RestTemplate;
//
//import java.util.HashMap;
//import java.util.Map;
//
//@Service
//@Slf4j
//public class ChuangLanSmsHandler implements CaptchaMessageHandler {
//
//    private RabbitTemplate rabbitTemplate;
//    private ChuangLanProperties chuangLanProperties;
//    private RestTemplate restTemplate;
//
//    ChuangLanSmsHandler(RabbitTemplate rabbitTemplate, ChuangLanProperties chuangLanProperties,
//                        RestTemplate restTemplate) {
//        this.rabbitTemplate = rabbitTemplate;
//        this.chuangLanProperties = chuangLanProperties;
//        this.restTemplate = restTemplate;
//    }
//
//    public Map<String, Object> sendSmsByPost(String phone, String code) {
//
//        HttpHeaders httpHeaders = new HttpHeaders();
//        MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");
//        httpHeaders.setContentType(type);
//
//        HashMap<String, Object> map = new HashMap<>();
//        map.put(ChuangLanConstants.PARAM_ACCOUNT, chuangLanProperties.getAccount()); //API账号
//        map.put(ChuangLanConstants.PARAM_PASSWORD, chuangLanProperties.getPassword()); //API密码
//        map.put(ChuangLanConstants.PARAM_MSG, String.format(chuangLanProperties.getTemplate(), code));//短信内容
//        map.put(ChuangLanConstants.PARAM_PHONE, phone);
//        map.put(ChuangLanConstants.PARAM_REPORT,ChuangLanConstants.DATA_REPORT); //是否需要状态报告
//
//        HttpEntity<Map<String, Object>> entity = new HttpEntity<>(map, httpHeaders);
//        ResponseEntity<Map> responseResultResponseEntity =
//                restTemplate.postForEntity(chuangLanProperties.getDomain() + chuangLanProperties.getPath(),
//                        entity, Map.class);
//        return responseResultResponseEntity.getBody();
//    }
//
//    @Override
//    public SmsCaptchaDTO buildCaptcha(String phone) throws AmqpException{
//
//        String code = StringUtil.random(6, RandomType.INT);
//        String id = StringUtil.randomUUID();
//        CorrelationData correlationData = new CorrelationData(id);
//        SmsCaptchaDTO smsCaptchaDTO = SmsCaptchaDTO.builder().id(id).code(code).phone(phone).build();
//
//        rabbitTemplate.convertAndSend("ums.sms.exchange", "UMS_SMS_QUEUE_KEY",
//                smsCaptchaDTO, correlationData);
//        return smsCaptchaDTO;
//    }
//
//    @Override
//    public boolean sendCaptcha(SmsCaptchaDTO smsCaptchaDTO) throws Exception {
//        Map<String,Object> retMap = sendSmsByPost(smsCaptchaDTO.getPhone(), smsCaptchaDTO.getCode());
//        String code = (String) retMap.get("code");
//        if (code.equals("0")) {
//            return true;
//        } else {
//            log.error(String.format("验证码短信发送失败: %s", retMap.toString()));
//            return false;
//        }
//    }
//}
